import 'package:flutter/services.dart';
import 'package:flutter_sms/flutter_sms.dart';
import 'package:jvtd_flutter_utils/src/toast/toast_util.dart';
import 'package:url_launcher/url_launcher.dart';

class SystemUtil {
  /// 打开系统发送短信页面
  ///
  /// [msg] 短信信息，可为空
  /// [recipients] 发送的手机号码组，可为空
  /// [errorMsg] 失败提示，选填
  static Future<void> sendSms({String msg, List<String> recipients, String errorMsg}) async {
    if (!await canSendSMS()) {
      ToastUtil.show(errorMsg ?? '无法发送短信，请检查后重试');
      return;
    }
    sendSMS(message: msg, recipients: recipients).catchError((_) {
      ToastUtil.show(errorMsg ?? _ ?? '');
    });
  }

  /// 复制信息
  ///
  /// [data] 复制对应信息
  /// [successMsg] 成功提示，选填
  /// [errorMsg] 失败提示，选填
  static void copy(String data, {String successMsg, String errorMsg}) {
    Clipboard.setData(ClipboardData(text: data)).then((value) {
      ToastUtil.show(successMsg ?? '复制成功');
    }).catchError((e) {
      ToastUtil.show(errorMsg ?? '复制失败');
    });
  }

  /// 打开网页
  ///
  /// [url] 网址信息
  /// [errorMsg] 无法打开提示，选填
  static Future<void> openUrl(String url, {String errorMsg}) async {
    if (!await canLaunch(url)) {
      ToastUtil.show(errorMsg ?? '当前网页无法打开');
      return;
    }
    launch(url);
  }

  /// 唤起系统电话
  ///
  /// [phone] 电话
  /// [errorMsg] 无法拨打提示，选填
  static void call(String phone, {String errorMsg}) async {
    String url = 'tel:' + phone;
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      ToastUtil.show(errorMsg ?? '此手机号无法拨打，请重试');
    }
  }
}
